package com.jr.mapper;


import com.jr.entry.BlogText;
import com.jr.entry.User;
import com.jr.pojo.TopListAndBlogText;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Component;

import java.util.ArrayList;

@Component
public interface BlogTextMapper {
    /**
     * 查询所有的博客文章
     * @return 查询到的BlogText以集合形式进行遍历显示在页面中
     */
    ArrayList<BlogText> selectAll(RowBounds rowBounds);

    /**
     * 根据BlogText实体类中的 private String type 进行条件查询
     * type有1、Java基础 2、数据库 3、JSP 4、框架
     * @param blogText
     * @return 查询到的BlogText以集合形式进行遍历显示在页面中
     */
    ArrayList<BlogText> selectByType(BlogText blogText, RowBounds rowBounds);

    /**
     * 根据点击次数进行热门文章点击次数从大到小排序
     * @return 询到的BlogText以集合形式进行遍历显示在侧面的热门文章模块处
     */
    ArrayList<BlogText> selectByClickNumber();

    /**
     * 根据被点击详情的文章ID进行查询，并将BlogText相应内容回显在详情页对应位置
     * @param blogText
     * @return 通过点击的文章ID以对象形式将内容遍历在详细信息中
     */
    BlogText selectByBlogId(BlogText blogText);

    /**
     * 根据文章类型查询并且按照点击次数，取出点击次数最多的前三条数据显示在相关推荐模块中
     * @param blogText 中的文章类型字段
     * @return 根据文章类型查询到的数据
     */
    ArrayList<BlogText> selectByTypeOderByClickNumber(BlogText blogText);

    /**
     * 根据用户传过来的uid查询blogText表里的用户uid的对应的所有数据 显示在后台首页文章管理位置
     * @param blogText
     * @return
     */
    ArrayList<BlogText> selectByUid(BlogText blogText, RowBounds rowBounds);

    /**
     * 通过博文的ID值遍历博文信息
     * @param blogText
     * @return
     */
    ArrayList<BlogText> selectByBlogid(BlogText blogText);

    /**
     * 后台管理模块中的文章编辑功能
     * 根据被选中的BlogText 对象中的blogid找到对应的文章，对文章进行编辑更改
     * @param blogText
     * @return 成功返回1失败返回0
     */
    int updateBlogTextByBlogId(BlogText blogText);

    /**
     * 后台管理模块中的文章删除功能
     * 根据被选中的BlogText 对象中的blogid找到对应的文章，对文章进行删除
     * @param blogText
     * @return 删除成功返回1 失败返回0
     */
    int deleteBlogTextByBlogId(BlogText blogText);


    /**
     * 后台管理中编写文章模块  新增文章
     * @param blogText
     * @return 成功返回1 失败返回0
     */
    int insertBlogText(BlogText blogText);

    /**
     * 用于统计数据库后端的总数据条
     * @param blogText
     * @return
     */
    int countBlogText(BlogText blogText);

    /**
     * 阅读后增加点击量
     * @param blogText
     * @return
     */
    int updateClickNumber(BlogText blogText);
}
